home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / dlm_device.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  2KB  |  109 lines

  1. /******************************************************************************
  2. *******************************************************************************
  3. **
  4. **  Copyright (C) Sistina Software, Inc.  1997-2003  All rights reserved.
  5. **  Copyright (C) 2004-2007 Red Hat, Inc.  All rights reserved.
  6. **
  7. **  This copyrighted material is made available to anyone wishing to use,
  8. **  modify, copy, or redistribute it subject to the terms and conditions
  9. **  of the GNU General Public License v.2.
  10. **
  11. *******************************************************************************
  12. ******************************************************************************/
  13.  
  14. #ifndef _LINUX_DLM_DEVICE_H
  15. #define _LINUX_DLM_DEVICE_H
  16.  
  17. /* This is the device interface for dlm, most users will use a library
  18.  * interface.
  19.  */
  20.  
  21. #include <linux/dlm.h>
  22. #include <linux/types.h>
  23.  
  24. #define DLM_USER_LVB_LEN    32
  25.  
  26. /* Version of the device interface */
  27. #define DLM_DEVICE_VERSION_MAJOR 6
  28. #define DLM_DEVICE_VERSION_MINOR 0
  29. #define DLM_DEVICE_VERSION_PATCH 1
  30.  
  31. /* struct passed to the lock write */
  32. struct dlm_lock_params {
  33.     __u8 mode;
  34.     __u8 namelen;
  35.     __u16 unused;
  36.     __u32 flags;
  37.     __u32 lkid;
  38.     __u32 parent;
  39.     __u64 xid;
  40.     __u64 timeout;
  41.     void *castparam;
  42.     void *castaddr;
  43.     void *bastparam;
  44.     void *bastaddr;
  45.     struct dlm_lksb *lksb;
  46.     char lvb[DLM_USER_LVB_LEN];
  47.     char name[0];
  48. };
  49.  
  50. struct dlm_lspace_params {
  51.     __u32 flags;
  52.     __u32 minor;
  53.     char name[0];
  54. };
  55.  
  56. struct dlm_purge_params {
  57.     __u32 nodeid;
  58.     __u32 pid;
  59. };
  60.  
  61. struct dlm_write_request {
  62.     __u32 version[3];
  63.     __u8 cmd;
  64.     __u8 is64bit;
  65.     __u8 unused[2];
  66.  
  67.     union  {
  68.         struct dlm_lock_params   lock;
  69.         struct dlm_lspace_params lspace;
  70.         struct dlm_purge_params  purge;
  71.     } i;
  72. };
  73.  
  74. struct dlm_device_version {
  75.     __u32 version[3];
  76. };
  77.  
  78. /* struct read from the "device" fd,
  79.    consists mainly of userspace pointers for the library to use */
  80.  
  81. struct dlm_lock_result {
  82.     __u32 version[3];
  83.     __u32 length;
  84.     void * user_astaddr;
  85.     void * user_astparam;
  86.     struct dlm_lksb * user_lksb;
  87.     struct dlm_lksb lksb;
  88.     __u8 bast_mode;
  89.     __u8 unused[3];
  90.     /* Offsets may be zero if no data is present */
  91.     __u32 lvb_offset;
  92. };
  93.  
  94. /* Commands passed to the device */
  95. #define DLM_USER_LOCK         1
  96. #define DLM_USER_UNLOCK       2
  97. #define DLM_USER_QUERY        3
  98. #define DLM_USER_CREATE_LOCKSPACE  4
  99. #define DLM_USER_REMOVE_LOCKSPACE  5
  100. #define DLM_USER_PURGE        6
  101. #define DLM_USER_DEADLOCK     7
  102.  
  103. /* Lockspace flags */
  104. #define DLM_USER_LSFLG_AUTOFREE   1
  105. #define DLM_USER_LSFLG_FORCEFREE  2
  106.  
  107. #endif
  108.  
  109.